/*工具类*/
#pragma once
#include <iostream>
#include <ctime>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

namespace log
{
    // 1.获取当前系统时间
    class Date
    {
    public:
        static size_t curTime()
        {
            return (size_t)time(nullptr);
        }
    };

    class File
    {
    public:
        // 判断文件是否存在
        static bool exists(const std::string &filename)
        {
            struct stat *st;
            if (stat(filename.c_str(), st) < 0)
            {
                return false;
            }
            return true;
        }

        // 获取文件所在路径
        static std::string getPath(const std::string &filename)
        {
            if (filename.empty())
            {
                return ".";
            }
            int pos = filename.find_last_of("/\\"); // 找路径分割符
            // 找不到表示在当前层
            if (pos == std::string::npos)
            {
                return ".";
            }
            return filename.substr(0, pos + 1);
        }

        // 创建目录
        static void createDir(const std::string &path)
        {
            if (path.empty())
            {
                return;
            }
            int pos = 0, idx = 0;
            while (idx < path.size())
            {
                pos = path.find_first_of("/\\", idx);
                if (pos == std::string::npos)
                {
                    mkdir(path.c_str(), 0777);
                    return;
                }

                std::string direc = path.substr(0, pos + 1);
                if (exists(direc))
                {
                    idx = pos + 1;
                    continue;
                }
                mkdir(direc.c_str(), 0777);
                idx = pos + 1;
            }
        }
    };
};